package com.lin.dynamicProxyMode;

import java.lang.reflect.Proxy;

public class ProxyUtils {
    public static UserService creatProxy(UserService userService) {
        return (UserService) Proxy.newProxyInstance(
                userService.getClass().getClassLoader(), // 目标类的类加载器
                userService.getClass().getInterfaces(), // 目标类实现的接口
                (proxy, method, args) -> { // 内部类形式--代理逻辑(回调方法)
                        log(method.getName());
                        return method.invoke(userService, args);
                    }
        );
    }

    private static void log(String msg) {
        System.out.println("使用了" + msg + "方法");
    }
}
